/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dao;

import java.util.List;
import javax.ejb.EJBException;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import pojo.Doutor;

/**
 *
 * @author alessandro
 */
@Stateless
public class DaoDoutor implements DaoDoutorLocal {

    @PersistenceContext
    private EntityManager manager;

    @Override
    public Doutor salvar(Doutor doutor) {
        try {
            doutor = this.manager.merge(doutor);
        } catch (Exception e) {
            System.out.println("deu exception memo mano" + e.getMessage());
        }
        this.manager.flush();
        System.out.println("Passou no ejb");
        return doutor;
    }

    @Override
    public void excluir(Doutor doutor) throws Exception {
        Doutor d;
        d = this.manager.find(Doutor.class, doutor.getIdDoutor());
        if (d == null) {
            throw new Exception("Nenhum registro com o id informado, tente buscar o registro novamente.");
        }
        try {
            this.manager.remove(d);
            this.manager.flush();
        } catch (Exception e) {
            System.out.println("erroooooooooooooooooooooooooooooooooo");
            if (e.getMessage().contains("Code: 1451")) {
                throw new Exception("Registro utilizado em outra tabela.");
            } else {
                throw new Exception("Erro desconhecido ao excluir.");
            }
        }
    }

    @Override
    public List<Doutor> buscaTodosDoutores() {
        System.out.println("Passou no busca");
        return this.manager.createNamedQuery("Doutor.findAll").getResultList();
    }

    @Override
    public List<Doutor> buscaDoutoresNomes(String nome) {
        System.out.println("buscaDoutoresNomes");
        return this.manager.createNamedQuery("Doutor.findByNome").setParameter("nome", "%" + nome + "%").getResultList();
    }
    

    @Override
    public Doutor buscaDoutorPorId(Integer doutor) {
        System.out.println("enttrou aki no negoxipas sahash");
        return (Doutor) this.manager.createNamedQuery("Doutor.findByIdDoutor").setParameter("idDoutor", doutor).getSingleResult();
    }
}
